package com.atguigu.dao;


import com.atguigu.domain.Book;
import com.atguigu.domain.Page;

import java.math.BigDecimal;
import java.util.List;

/**
 * book dao module
 * @author dl
 * @create 2020-04-25-14:04
 */
public interface BookDao {
	/**
	 * get all books
	 * @return List<Book>
	 */
	List<Book> getAllBook();

	/**
	 * save book
	 * @param book
	 * @return true : success false : failed
	 */
	boolean saveBook(Book book);
	/**
	 * update book
	 * @param book
	 * @return true : success false : failed
	 */
	boolean updateBook(Book book);
	/**
	 * get one book by id
	 * @param bookId
	 * @return true : success false : failed
	 */
	Book getBookById(Integer bookId);
	/**
	 * delete book
	 * @param book
	 * @return true : success false : failed
	 */
	boolean delBook(Book book);

	/**
	 * paging query items
	 * @param queryIndex query index
	 * @param pageSize page size
	 * @return List<Book> query result
	 */
	List<Book> getItems(int queryIndex, int pageSize);

	/**
	 * query total count
	 * @return
	 */
	Object queryCount();

	/**
	 * 根据条件查询图书的总数
	 * @return Object
	 */
	Object queryCountByPrice(BigDecimal minPrice,BigDecimal maxPrice);

	/**
	 * 根据条件查询数据库中的数据<book>
	 * @param queryIndex 数据库开始进行查询的起始索引
	 * @param pageSize 要查出几条数据
	 * @param minPrice 最小的价格
	 * @param maxPrice 最大的价格
	 * @return
	 */
	List<Book> getItemsByPrice(int queryIndex, int pageSize, BigDecimal minPrice,BigDecimal maxPrice);

	/**
	 * TODO: 预留之后修改图书销量和库存
	 * 修改图书销量和库存
	 * @param bookId
	 * @param stock
	 * @param sales
	 * @return int
	 */
	int updateBookStockAndSales(Integer bookId, Integer stock , Integer sales);
}
